package admin

import (
	"gitee.com/gopher2011/gin"
	"gitee.com/gopher2011/mall/app/dao"
	"gitee.com/gopher2011/mall/app/service"
	"net/http"
	"strconv"
)

// 商品属性分类管理 /product_attribute/category
var PmsProductAttributeCategory = &pmsProductAttributeCategoryApi{}

type pmsProductAttributeCategoryApi struct{}

// 添加商品属性分类 /create Post 参数:name
func (it *pmsProductAttributeCategoryApi) Create(r *gin.Context) {
	name := r.PostForm("name")
	res, err := service.PmsProductAttributeCategory.Create(name)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 修改商品属性分类 /update/:id Post 参数:id,name
func (it *pmsProductAttributeCategoryApi) Update(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("id"))
	name := r.PostForm("name")
	res, err := service.PmsProductAttributeCategory.Update(int64(id), name)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 删除单个商品属性分类 /delete/:id Get 参数:id
func (it *pmsProductAttributeCategoryApi) Delete(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("id"))
	res, err := service.PmsProductAttributeCategory.Delete(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

//获取单个商品属性分类信息 /:id Get 参数:id
func (it *pmsProductAttributeCategoryApi) GetItem(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("id"))
	res, err := service.PmsProductAttributeCategory.GetItem(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 分页获取所有商品属性分类 /list Get 参数:dao.Page
func (it *pmsProductAttributeCategoryApi) List(r *gin.Context) {
	var ptr dao.Page
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.PmsProductAttributeCategory.GetList(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 获取所有商品属性分类及其下属性 /list/withAttr Get 参数:无
func (it *pmsProductAttributeCategoryApi) GetListWithAttr(r *gin.Context) {
	res, err := service.PmsProductAttributeCategory.GetListWithAttr()
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}
